package com.eastfair.auth.dto;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import com.eastfair.auth.enumeration.RoleRoleTypeEnum;
import com.eastfair.auth.enumeration.RoleDsTypeEnum;
import java.io.Serializable;

/**
 * <p>
 * 实体类
 * 
 * </p>
 *
 * @author ligang
 * @since 2022-09-21
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = false)
@Builder
@ApiModel(value = "RoleSaveDTO", description = "")
public class RoleSaveDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 角色名称
     */
    @ApiModelProperty(value = "角色名称")
    @Size(max = 255, message = "角色名称长度不能超过255")
    private String name;
    /**
     * 角色code码
     */
    @ApiModelProperty(value = "角色code码")
    @Size(max = 255, message = "角色code码长度不能超过255")
    private String code;
    /**
     * 数据权限#{ALL:1,查看全部;THIS_LEVEL_CHILDER:2,本组以及子组;THIS_LEVEL:3,查本组;ASSIGN_LEVEL:4,查所指组和人;SELF:5,只查本人;}
     */
    @ApiModelProperty(value = "数据权限#{ALL:1,查看全部;THIS_LEVEL_CHILDER:2,本组以及子组;THIS_LEVEL:3,查本组;ASSIGN_LEVEL:4,查所指组和人;SELF:5,只查本人;}")
    private RoleDsTypeEnum dsType;
    /**
     * 角色类型#{P_ADMIN:厦门智慧场馆管理员;P_VENUE_ADMIN:场馆业务系统管理员;P_CERTIFICATE_ADMIN:证件系统管理员;P_COMPOSITE_VENUE_ADMIN:综合-场馆管理员;P_COMPOSITE_COURT_ADMIN:综合-主场管理员;P_COMPOSITE_PRODUCER_ADMIN:综合-搭建商管理员;P_COMPOSITE_PRODUCER_COMPANY:综合-搭建商公司角色;P_COMPOSITE_TRANSPORT_ADMIN:综合-主运管理员;P_COMPOSITE_TRANSPORT_COMPANY:综合-主运系统公司角色;P_COMPOSITE_TRADE_ADMIN:综合-商旅管理员;P_COMPOSITE_MATING_ADMIN:综合-配套商管理员;P_COMPOSITE_MATING_COMPANY:综合-配套商公司角色;P_PAY_ADMIN:支付系统管理员;P_EXHIBITOR_SELF_ADMIN:展商自服务管理员;P_CATERINGAPP_ADMIN:餐饮小程序用户;P_CATERING_ADMIN:餐饮后台管理员;P_PORTAL_OUT_VENUE_ADMIN:对外门户后台管理员;P_PORTAL_OUT_OPERATION_ADMIN:对外门户运营管理员;P_PORTAL_IN_WORK_ADMIN:内部门户后台管理员;P_PORTAL_IN_WORKAPP_ADMIN:内部门户APP用户;P_OPERATION_CENTER_ADMIN:智慧运营中心管理员;P_VISITOR_FRONT_ADMIN:访客系统用户;P_VISITOR_BACK_ADMIN:访客后台管理员;other:其他;}
     */
    @ApiModelProperty(value = "角色类型#{P_ADMIN:厦门智慧场馆管理员;P_VENUE_ADMIN:场馆业务系统管理员;P_CERTIFICATE_ADMIN:证件系统管理员;P_COMPOSITE_VENUE_ADMIN:综合-场馆管理员;P_COMPOSITE_COURT_ADMIN:综合-主场管理员;P_COMPOSITE_PRODUCER_ADMIN:综合-搭建商管理员;P_COMPOSITE_PRODUCER_COMPANY:综合-搭建商公司角色;P_COMPOSITE_TRANSPORT_ADMIN:综合-主运管理员;P_COMPOSITE_TRANSPORT_COMPANY:综合-主运系统公司角色;P_COMPOSITE_TRADE_ADMIN:综合-商旅管理员;P_COMPOSITE_MATING_ADMIN:综合-配套商管理员;P_COMPOSITE_MATING_COMPANY:综合-配套商公司角色;P_PAY_ADMIN:支付系统管理员;P_EXHIBITOR_SELF_ADMIN:展商自服务管理员;P_CATERINGAPP_ADMIN:餐饮小程序用户;P_CATERING_ADMIN:餐饮后台管理员;P_PORTAL_OUT_VENUE_ADMIN:对外门户后台管理员;P_PORTAL_OUT_OPERATION_ADMIN:对外门户运营管理员;P_PORTAL_IN_WORK_ADMIN:内部门户后台管理员;P_PORTAL_IN_WORKAPP_ADMIN:内部门户APP用户;P_OPERATION_CENTER_ADMIN:智慧运营中心管理员;P_VISITOR_FRONT_ADMIN:访客系统用户;P_VISITOR_BACK_ADMIN:访客后台管理员;other:其他;}")
    private RoleRoleTypeEnum roleType;
    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    @Size(max = 255, message = "描述长度不能超过255")
    private String description;
    /**
     * 是否生效(默认1：可用 0:不可用)
     */
    @ApiModelProperty(value = "是否生效(默认1：可用 0:不可用)")
    private Integer isEnabled;
    /**
     * 是否删除(默认0：未删除 1:已删除)
     */
    @ApiModelProperty(value = "是否删除(默认0：未删除 1:已删除)")
    private Integer isDeleted;
    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    private Long tenantId;
    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;
    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    private Long subsystemId;
    /**
     * 业务标识
     */
    @ApiModelProperty(value = "业务标识")
    @Size(max = 255, message = "业务标识长度不能超过255")
    private String businessTag;
    /**
     * 团队ID
     */
    @ApiModelProperty(value = "团队ID")
    private Long teamId;
    /**
     * 来源角色id
     */
    @ApiModelProperty(value = "来源角色id")
    private Long sourceRoleId;

}
